package model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import converter.BaseEntity;
import dao.EmpreendimentoPorEstagioDao;
import dao.InvestimentoSubeixoDao;
import dao.topMunicipioDao;



public class Estado implements BaseEntity, Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -1473975596822597937L;
	private long id;
	private String nome;
	private int total_emp;
	private BigDecimal investTotal;
	private BigDecimal mediaInvest;
	private List<GastoSubeixo> gastosSubeixo;
	private List<EstagioObra> estagioObras;
	private List<CidadeInvestimento> topEmps;
	
	
	public Estado(long id, String nome, int total_emp, BigDecimal investTotal, BigDecimal mediaInvest) {
		super();
		this.id = id;
		this.nome = nome;
		this.total_emp = total_emp;
		this.investTotal = investTotal;
		this.mediaInvest = mediaInvest;
		
		//povoaGastosSubeixo();
		//povoaPorEstagio();
		//povoaTopMunicipios();
		
	}
	
	public void povoaTopMunicipios() {
		topEmps = new ArrayList<CidadeInvestimento>();
		
		topMunicipioDao topEmp = new topMunicipioDao();
		
		topEmps = topEmp.getDadosUfCidade(nome);
		System.out.println("\n\n--- Top municipios ---");
		
	}
	
	public void povoaPorEstagio() {
		estagioObras = new ArrayList<EstagioObra>();
		
		EmpreendimentoPorEstagioDao empPorEstagio = new EmpreendimentoPorEstagioDao();
		
		estagioObras = empPorEstagio.getDadosEstagioObra(nome);
		System.out.println("\n\n--- Top Estágio ---");
	}
	
	public void povoaGastosSubeixo() {
		gastosSubeixo = new ArrayList<GastoSubeixo>();
		
		InvestimentoSubeixoDao investSubeixoDao = new InvestimentoSubeixoDao();
		gastosSubeixo = investSubeixoDao.getDadosInvestimentoSubeixo(nome);
		System.out.println("\n\n--- Gastos subeixo ---");
	}
		
	public int getTotal_emp() {
		return total_emp;
	}

	public void setTotal_emp(int total_emp) {
		this.total_emp = total_emp;
	}

	public BigDecimal getInvestTotal() {
		return investTotal;
	}

	public void setInvestTotal(BigDecimal investTotal) {
		this.investTotal = investTotal;
	}

	public BigDecimal getMediaInvest() {
		return mediaInvest;
	}

	public void setMediaInvest(BigDecimal mediaInvest) {
		this.mediaInvest = mediaInvest;
	}

	public List<CidadeInvestimento> getTopEmps() {
		return topEmps;
	}

	public void setTopEmps(List<CidadeInvestimento> topEmps) {
		this.topEmps = topEmps;
	}

	public List<EstagioObra> getEstagioObras() {
		return estagioObras;
	}

	public void setEstagioObras(List<EstagioObra> estagioObras) {
		this.estagioObras = estagioObras;
	}

	public List<GastoSubeixo> getGastosSubeixo() {
		return gastosSubeixo;
	}

	public void setGastosSubeixo(List<GastoSubeixo> gastosSubeixo) {
		this.gastosSubeixo = gastosSubeixo;
	}

	public Estado() {
		
	}

	public Long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + (int) (id ^ (id >>> 32));
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Estado other = (Estado) obj;
		if (id != other.id)
			return false;
		return true;
	}
}
